home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 1
/
Cream of the Crop 1.iso
/
CAD
/
LISP04.ARJ
/
EP.LSP
< prev
next >
Wrap
Lisp/Scheme
|
1990-07-30
|
5KB
|
129 lines
;;; EP.lsp Version 1.0
;;; Copyright (C) 1990 by Autodesk, Inc.
;;;
;;; Permission to use, copy, modify, and distribute this software and its
;;; documentation for any purpose and without fee is hereby granted.
;;;
;;; THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
;;; ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
;;; MERCHANTABILITY ARE HEREBY DISCLAIMED.
;;;
;;; By Troy Davis / revised by Steve McCall
;;; Autodesk, Inc. May 1, 1990
;;;---------------------------------------------------------------------------
;;; DESCRIPTION
;;;
;;; EP.LSP (Enter Point) -- prompts the user for coordinate point entries;
;;; makes it easy to distinguish between WCS or UCS Absolute or
;;; Relative - or Cartesian, Cylindrical or Spherical entries.
;;; (Quick, what is "@*123<45,67" ???). You can also reset the
;;; "lastpoint" system variable for Relative entries.
;;;
;;; After this Lisp function is loaded <(load "ep")>, it can be
;;; used anytime AutoCAD requires a point. Just enter "(ep)"
;;; at the point prompt.
;;;
;;; You will then be prompted:
;;;
;;; Exit/World/Absolute to UCS origin/Set lastpoint/<Relative to lastpoint>:
;;;
;;; Enter a letter: e, w, a, s, or r<default>, and follow the
;;; prompts. "w" (World) also allows Absolute or Relative.
;;;
;;; The function then assembles the proper point entry, which is
;;; given to the AutoCAD prompt and echoed to the screen so you can
;;; see how that point would be specified.
;;;
;;; You can enter "E" (Exit) at any time to return to normal point
;;; entry; cancelling the function will also cancel the parent
;;; command. All variables are local. This function cannot be
;;; used to respond to an AutoLISP prompt.
;;;
;;;---------------------------------------------------------------------------
(defun myerr (msg)
(if (/= msg "Function cancelled")
(princ (strcat "\nError: " msg))
)
(setq *error* olderr)
(princ)
)
(defun ep ( / fp1 fp2 fp3 fp4 fp5 fp6 fp7 fp8 fp9 fp10)
(setq olderr *error*
*error* myerr
)
(while
(not
(=
(progn
(initget "Exit World Absolute Set Relative")
(setq fp1 (getkword (strcat
"\nExit/World/Absolute to UCS origin/"
"Set lastpoint/<Relative to lastpoint>: ")))
)
"Exit"
)
)
(if (= fp1 "Set")
(setvar "LASTPOINT" (getpoint "Reference point: "))
(progn
(setq fp10 "")
(if (= fp1 "World")
(progn
(initget "Absolute Relative")
(setq fp10 "World"
fp2 (getkword
"Absolute to World origin/<Relative to lastpoint>: ")
)
(if (= fp2 "Absolute")
(setq fp3 "*" fp4 (trans (list 0.0 0.0 0.0) 0 1))
(setq fp3 "@*" fp4 (getvar "lastpoint"))
)
)
(if (= fp1 "Absolute")
(setq fp3 "" fp4 (list 0.0 0.0 0.0))
(setq fp3 "@" fp4 (getvar "lastpoint"))
)
)
(initget "Xyz Spherical Cylindrical")
(setq fp5 (getkword "Xyz/Cylindrical/<Spherical>: "))
(initget 1)
(if (= fp5 "Cylindrical")
(progn
(setq fp6 (getdist fp4 "Enter distance in XY plane: "))
(initget 1) (setq fp7 (getangle fp4 "Enter angle from X: "))
(initget 1) (setq fp8 (getdist fp4 "Enter displacement along Z: "))
(setq fp9 (strcat fp3 (rtos fp6) "<" (angtos fp7) "," (rtos fp8)))
)
(if (= fp5 "Xyz")
(progn
(setq fp6 (getdist (strcat
"Enter displacement along " fp10 " X axis: ")))
(initget 1) (setq fp7 (getdist (strcat
"Enter displacement along " fp10 " Y axis: ")))
(initget 1) (setq fp8 (getdist (strcat
"Enter displacement along " fp10 " Z axis: ")))
(setq fp9 (strcat fp3 (rtos fp6) ","
(rtos fp7) "," (rtos fp8)))
)
(progn
(setq fp6 (getdist fp4 "Enter 3D Distance: "))
(initget 1) (setq fp7 (getangle fp4 "Enter Angle from X: "))
(initget 1) (setq fp8 (getangle fp4
"Enter Angle from XY plane: "))
(setq fp9 (strcat fp3 (rtos fp6) "<" (angtos fp7) "<"
(angtos fp8)))
)
)
)
(command fp9)
)
)
)
(setq *error* olderr)
(princ)
)
(princ "\n\tEp loaded. Start command with (ep) when a point is requested.")
(princ)